#include <cstdio> //uncle-lu
#include <algorithm>
using namespace std;
//可以发现，给出的x,y必定是从里向外的分组，最小的x必定和最小的y搭配，第二小的x必定和第二小的y搭配，所以可以排序直接处理，同样可以发现，假如当前线段被相交，在它里面的线段必定也相交。
//所以可以将线段排序，二分找出相交线段的最靠外的那一条。
int x[100100], y[100010];
int n, m;

bool isintersect(double x1, double y1, double x2, double y2)
{
    double k1 = y1 / x1;
    double k2 = -y2 / x2;
    double x = y2 / (k1 - k2); //计算交点x坐标
    if (x > 0 && x <= x1)
    {
        return true;
    }
    return false;
}

int main()
{
    scanf("%d", &n);
    for (int i = 1; i <= n; ++i)
        scanf("%d", &x[i]);
    for (int i = 1; i <= n; ++i)
        scanf("%d", &y[i]);

    sort(x + 1, x + 1 + n);
    sort(y + 1, y + 1 + n);

    scanf("%d", &m);
    for (int i = 1; i <= m; i++)
    {
        int x_1, y_1;
        scanf("%d %d", &x_1, &y_1);

        int l = 1, r = n;
        while (l <= r)
        {
            int mid = (r + l) / 2; // objective 2填空
            if (isintersect(x_1, y_1, x[mid], y[mid]))
            {
                l = mid + 1;
            }
            else
            {
               r = mid - 1;
            }
        }
        // 什么情况完全不会相交？
        if (isintersect(x_1,y_1,x[1],y[1]))
            printf("%d", r);
        else
            printf("%d", 0);
        printf("\n");
    }
    //system("pause");
    return 0;
}
